// 服务器的入口文件
// 1.创建KOA的实例对象
const Koa = require("koa")
const app = new Koa()
// 2.绑定中间件
// 绑定第一层中间件
const respDurationMiddleware = require('./middleware/koa_response_duration')
app.use(respDurationMiddleware)
// 绑定第二层中间件
const respHeaderMiddleware = require('./middleware/koa_response_header')
app.use(respHeaderMiddleware)
// 绑定第三层中间件
const respDataMiddleware = require('./middleware/koa_response_data')
app.use(respDataMiddleware)
// 3.绑定端口号 8888
app.listen(8888)

const webSocketServe = require('./service/web_socket_service')
// 开启服务器的监听，监听客户端的连接
// 当某个客户端连接成功之后，就会对这个客户端进行message事件的监听
webSocketServe.listen()
// const WebSocet = require('ws')
// // 第一步：创建WebSocet服务端的对象，绑定的端口号是9998
// const wss = new WebSocet.Server({
//     port:9998
// })
// // 第二步：对客户端的连接事件进行监听
// // client:代表的是客户端的连接socket对象
// wss.on('connection',client => {
//     console.log('客户端连接成功')
//     // 对客户端的连接对象进行message事件的监听
//     // msg:由客户端发给服务器的数据
//     client.on('message',msg =>{
//         console.log('客户端发送数据给服务器'+msg)
//         // 由服务端往客户端发送数据
//         client.send('hello socket from backend')
//     })
// })

// 跨域问题：
//     一，同源策略：
//         1. 同协议， 同域名， 同端口
//         2. 指的是当前页面的地址与ajax获取数据的地址
//     二，设置响应头：
//         app.use(async (ctx, next) => {
//             ctx.set("Access-Control-Allow-Origin", "*")
//             ctx.set("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE")
//             await next();
//         })